Nico Rieck: this patch series fixes visibility issues on Windows as explained in <http://lists.cs.uiuc.edu/pipermail/cfe-dev/2013-August/031214.html>. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188192 91177308-0d34-0410-b5e6-96231b3b80d8 
diff --git a/include/tuple b/include/tuple index 94876c9..1829932 100644 --- a/include/tuple +++ b/include/tuple 
@@ -135,7 +135,7 @@    // allocator_arg_t   -struct _LIBCPP_TYPE_VIS allocator_arg_t { }; +struct _LIBCPP_TYPE_VIS_ONLY allocator_arg_t { };    #if defined(_LIBCPP_HAS_NO_CONSTEXPR) || defined(_LIBCPP_BUILDING_MEMORY)  extern const allocator_arg_t allocator_arg; @@ -170,7 +170,7 @@  };    template <class _Tp, class _Alloc> -struct _LIBCPP_TYPE_VIS uses_allocator +struct _LIBCPP_TYPE_VIS_ONLY uses_allocator  : public __uses_allocator<_Tp, _Alloc>  {  }; @@ -200,7 +200,7 @@  // tuple_size    template <class ..._Tp> -class _LIBCPP_TYPE_VIS tuple_size<tuple<_Tp...> > +class _LIBCPP_TYPE_VIS_ONLY tuple_size<tuple<_Tp...> >  : public integral_constant<size_t, sizeof...(_Tp)>  {  }; @@ -208,7 +208,7 @@  // tuple_element    template <size_t _Ip, class ..._Tp> -class _LIBCPP_TYPE_VIS tuple_element<_Ip, tuple<_Tp...> > +class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, tuple<_Tp...> >  {  public:  typedef typename tuple_element<_Ip, __tuple_types<_Tp...> >::type type; @@ -536,7 +536,7 @@  };    template <class ..._Tp> -class _LIBCPP_TYPE_VIS tuple +class _LIBCPP_TYPE_VIS_ONLY tuple  {  typedef __tuple_impl<typename __make_tuple_indices<sizeof...(_Tp)>::type, _Tp...> base;   @@ -724,7 +724,7 @@  };    template <> -class _LIBCPP_TYPE_VIS tuple<> +class _LIBCPP_TYPE_VIS_ONLY tuple<>  {  public:  _LIBCPP_INLINE_VISIBILITY @@ -864,7 +864,7 @@    namespace { const __ignore_t<unsigned char> ignore = __ignore_t<unsigned char>(); }   -template <class _Tp> class _LIBCPP_TYPE_VIS reference_wrapper; +template <class _Tp> class _LIBCPP_TYPE_VIS_ONLY reference_wrapper;    template <class _Tp>  struct ___make_tuple_return @@ -1140,7 +1140,7 @@  }    template <class ..._Tp, class _Alloc> -struct _LIBCPP_TYPE_VIS uses_allocator<tuple<_Tp...>, _Alloc> +struct _LIBCPP_TYPE_VIS_ONLY uses_allocator<tuple<_Tp...>, _Alloc>  : true_type {};    template <class _T1, class _T2>